package com.example.langchanin4jdemo1.controller;

import dev.langchain4j.community.model.dashscope.QwenEmbeddingModel;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.output.Response;
import dev.langchain4j.store.embedding.EmbeddingMatch;
import dev.langchain4j.store.embedding.redis.RedisEmbeddingStore;

import java.util.List;

public class EmbeddingDemo2 {
    public static void main(String[] args) {


        EmbeddingModel embeddingModel = QwenEmbeddingModel
                .builder()
                .apiKey("sk-875dd6ef14244431acdc7ccb974f5bfe")
                .modelName("text-embedding-v2")
                .build();

        RedisEmbeddingStore embeddingStore = RedisEmbeddingStore.builder()
                .host("127.0.0.1")
                .port(6379)
                .dimension(1536) //维度，需要与计算结果保持⼀致。如果使⽤其他的模型，可能会有不同的结果。
                .build();
//        // ⽣成向量
//        Response<Embedding> embed = embeddingModel.embed("你好，我是你的好朋友小王");
//        // 存储向量--单独指定数据ID，索引的ID是固定的embedding-index
//        embeddingStore.add("vec1", embed.content());
        List<EmbeddingMatch<TextSegment>> matches = embeddingStore.findRelevant(embeddingModel.embed("我的名字叫小王").content(), 3, -1);
        for (EmbeddingMatch<TextSegment> match : matches){
            System.out.println(match.score());
        }
    }
}
